#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS


//struct S
//{
//	char name[20];
//	char StudentID[20];
//	int age;
//
//};
//
//int main()
//{
//	struct S s1 = { "gzc","20231158058",20 };
//	printf("name : %s\n", s1.name);
//	printf("StudenID : %s\n", s1.StudentID);
//	printf("age : %d\n", s1.age);
//
//	struct S s2 = { .StudentID = "20231158058",.age = 18,.name = "bbh" };
//	printf("name : %s\n", s2.name);
//	printf("StudenID : %s\n", s2.StudentID);
//	printf("age : %d\n", s2.age);
//	return 0;
//}


//修改默认对⻬数 #pragma
//#pragma pack(3) //设置默认对齐数为3
//
//struct S
//{
//	char c1;
//	int i;
//	char c2;
//};
//
//int main()
//{
//	printf("%zd\n", sizeof(struct S));
//	return 0;
//}


//结构体传参
//struct S
//{
//	int data[1000];
//	int num;
//};
//
//void print1(struct S s)
//{
//	printf("%d\n", s.num);
//}
//
//void print2(struct S* ps)//首选
//{
//	printf("%d\n", ps->num);
//}
//
//int main()
//{
//	struct S s = { {1,2,3,4},1000 };
//	print1(s);
//	print2(&s);
//	return 0;
//}


//位段的实现
//struct A
//{
//	int _a : 2;
//	int _b : 3;
//	int _c : 18;
//};
//
//int main()
//{
//	printf("%zd\n", sizeof(struct A));
//	return 0;
//}

//位段的内存分配
//struct s
//{
//    char a : 3;
//    char b : 4;
//    char c : 5;
//    char d : 4;
//};
//
//int main()
//{
//    struct s f = { 0 };
//    f.a = 10;
//    f.b = 13;
//    f.c = 5;
//    f.d = 10;
//    printf("%zd", sizeof(struct s));
//    return 0;
//}


//不能对位段的成员使⽤&操作符
//struct A
//{
//    char a : 3;
//    char b : 4;
//    char c : 5;
//    char d : 4;
//};
//
//int main()
//{
//    struct A sa = { 0 };
//
//    int b = 0;
//    scanf("%d", &b);
//    sa.b = b;
//    return 0;
//}